パソコン活用研究PCマニアック道(FORTRAN,COBOL,PL/I,PASCAL,LISP,LOGO,PROLOG,APL,PERL,SQL)
四則演算
アトムとリストでは、Lispの特長であるアトムとリストについて触れました。Lispらしさという点からいうと、リスト処理
をとりあげるのが本来の順序でしょうが、今回は他のプログラム言語からの入門者がなじみやすいように、あえて
一番Lispらしさの薄い四則演算についてまとめてみます。Lispらしさが薄いとは言っても、腐ってもLisp。Lispらしさ
を堪能するには十分でしょう。
1 加算 + PLUS
加算の関数は+またはPLUSです。両方とも使えるLISPもあれば、どちらか一方のみしか使えないLISP
もあります。xl304winでは+しか使えません。YoolwはPLUSと+の両方が使えます。
xl304winの場合 (+ 3 4) 結果 7
Yoolwの場合 (PLUS 1 8) 結果 9
古いLisp処理系では、+, PLUSの引数は2個となっていましたが、最近のLispは2個以上の引数が使えるよう
です。xl304winもYoolwも2個以上の引数が使えます。例えば以下のようです。
(+ 2 5 5) と記述すると、2+5+5と計算され、結果は12となります。
これは(+ 2 (+ 5 5)) と記述しても同じです。
XLISP-PLUS version 3.04 Portions Copyright (c) 1988, by David Betz. Modified by Thomas Almy and others. > (+ 2 5 5) 12 > (+ 2 (+ 5 5)) 12 > |
2 減算、乗除算
減算、乗算、除算の例をあげます。
書式 | 処理結果 | |
減算 | (- x y) または (DIFFERENCE x y) |
x - y |
乗算 | (* x y) または (TIMES x y) |
x * y |
除算 | (/ x y) または (QUOTIENT x y) |
x/y |
除算の結果の表示はLispによって異なり、(/ 7 3) とすると、xl304winでは、7/3と分数で表示し、
Yoolwでは、2.33333と少数で表示します。
引数が2個以上の場合は、加算と同じで、
(- 3 4 5) は 3-4-5
(* 2 3 4) は 2*3*4
(/ 12 3 6)は 12÷3÷6
という処理になります。
XLISP-PLUS version 3.04 Portions Copyright (c) 1988, by David Betz. Modified by Thomas Almy and others. > (- 3 4 5) -6 > (* 2 3 4) 24 > (/ 12 3 6) 2/3 > |
3 四則演算応用例
では、応用例を少し考えてみましょう。とは言ってもすぐに理解できると思いますが。
処理内容 | プログラム記述例 |
(3+4)*(5-2) | (* (+ 3 4) (- 5 2)) |
(5+5)3 | (* (+ 5 5) (+ 5 5) (+ 5 5)) |
XLISP-PLUS version 3.04 Portions Copyright (c) 1988, by David Betz. Modified by Thomas Almy and others. > (* (+ 3 4) (- 5 2)) 21 > (* (+ 5 5) (+ 5 5) (+ 5 5)) 1000 |
4 その他の演算
Lispによっては、以下のような演算が用意されています。
書式 | 処理結果 | |
REMAINDER | (REMAINDER x y) | x÷y の余りを求める |
DIVIDE | (DIVIDE x y) | x÷yの商と余りをドット表記のリストで返す |
ADD1 | (ADD1 x) | x+1を返す |
SUB1 | (SUB1 x) | x-1を返す |
ABS | (ABS x) | xの絶対値を返す |
Yoolwでの実行例も掲載しておきます。